package jnpf.model.dify.file.req;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 创建文档请求参数实体类主要用于传递创建文档时的具体内容，
 */
@Data
@ApiModel("创建文档")
public class  CreateDocumentReq  {
    @ApiModelProperty("文档名称")
    public String name;
    @ApiModelProperty("文档内容")
    public String text;
    @ApiModelProperty("索引方式，high_quality 高质量；economy 经济")
    public String indexing_technique="economy";
    @ApiModelProperty("处理规则")
    public process_rule process_rule;

    @Data
    class process_rule {
        @ApiModelProperty("清洗、分段模式 ，automatic 自动 / custom 自定义")
        //TODO 未增加非自动 custom 逻辑
        public String mode="automatic";
        @ApiModelProperty("自定义规则（自动模式下，该字段为空）")
        public Rules rules;

        @Data
        class Rules{
            @ApiModelProperty("预处理规则")
            List<PreRules> pre_processing_rules=new ArrayList<>()         ;
            @ApiModelProperty("分段规则")
            Segmentation segmentation;


            //注：这个可以理解为两个复选框按钮，通过enabled控制
            @Data
            class PreRules{
                @ApiModelProperty("预处理规则的唯一标识符")
                //remove_extra_spaces 替换连续空格、换行符、制表符
                //remove_urls_emails 删除 URL、电子邮件地址
                String id;
                @ApiModelProperty("是否选中该规则，不传入文档 ID 时代表默认值")
                Boolean enabled;
            }
            @Data
            class Segmentation{
                @ApiModelProperty("自定义分段标识符，目前仅允许设置一个分隔符。默认为 \\n")
                String separator;
                @ApiModelProperty("最大长度 (token) 默认为 1000")
                String max_tokens;
            }
        }
    }
}
